home *** CD-ROM | disk | FTP | other *** search
/ Trusted Irix /B 4.0.4 / Trusted-Irix B-4.0.1.iso / dist / eoe1.idb / usr / include / sys / vmereg.h.z / vmereg.h
C/C++ Source or Header  |  1992-04-03  |  3KB  |  99 lines

  1. #ifndef    __SYS_VMEREG_H__
  2. #define    __SYS_VMEREG_H__
  3.  
  4. /**************************************************************************
  5.  *                                      *
  6.  *          Copyright (C) 1986, Silicon Graphics, Inc.          *
  7.  *                                      *
  8.  *  These coded instructions, statements, and computer programs  contain  *
  9.  *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
  10.  *  are protected by Federal copyright law.  They  may  not be disclosed  *
  11.  *  to  third  parties  or copied or duplicated in any form, in whole or  *
  12.  *  in part, without the prior written consent of Silicon Graphics, Inc.  *
  13.  *                                      *
  14.  **************************************************************************/
  15.  
  16. #ident    "$Revision: 3.14 $"
  17.  
  18. /*
  19.  * VME Machine Independent (e.g. Bus specific stuff)
  20.  */
  21.  
  22. /* Address Modifiers */
  23. #define    VME_A16NPAMOD    0x29        /* a16 non-privileged addr modifier */
  24. #define    VME_A16SAMOD    0x2d        /* a16 supervisor addr modifier */
  25. #define    VME_A24NPAMOD    0x39        /* a24 non-privileged addr modifier */
  26. #define    VME_A24SAMOD    0x3d        /* a24 supervisor addr modifier */
  27. #define    VME_A32NPAMOD    0x09        /* a32 non-privileged addr modifier */
  28. #define    VME_A32NPBLOCK    0x0b        /* a32 non-privileged block transfer */
  29. #define    VME_A32SAMOD    0x0d        /* a32 supervisor addr modifier */
  30.  
  31. /* block mode Address Modifiers */
  32. #define VME_A24NPBAMOD    0x3b        /* a24 np block mode AM */
  33. #define VME_A24SBAMOD    0x3f        /* a24 sup block mode AM */
  34. #define VME_A32NPBAMOD    0x0b        /* a32 np block mode AM */
  35. #define VME_A32SBAMOD    0x0f        /* a32 sup block mode AM */
  36.  
  37. /* VME I/O address table */
  38. struct vme_ioaddr {
  39.     unsigned long    v_base;        /* virtual base */
  40.     unsigned long    v_phys;        /* physical base */
  41.     unsigned long    v_length;    /* in bytes */
  42. };
  43. extern struct vme_ioaddr vme_ioaddr[][6];
  44.  
  45. /* indexes into VME address table */
  46. #define VME_A16NP    0
  47. #define VME_A16S    1
  48. #define VME_A24NP    2
  49. #define VME_A24S    3
  50. #define VME_A32NP    4
  51. #define VME_A32S    5
  52.  
  53. /*
  54.  * VME address conversion macros
  55.  */
  56.  
  57. #ifdef STANDALONE
  58. /*
  59.  * VME address conversion macros
  60.  */
  61. #define VMESA16_TO_PHYS(x)    ((unsigned)(x)+VME_A16SBASE)
  62. #define VMENPA16_TO_PHYS(x)    ((unsigned)(x)+VME_A16NPBASE)
  63. #define VMESA24_TO_PHYS(x)    ((unsigned)(x)+VME_A24SBASE)
  64. #define VMENPA24_TO_PHYS(x)    ((unsigned)(x)+VME_A24NPBASE)
  65.  
  66. #define VMESA32_TO_PHYS(x)    ((unsigned)(x)+VME_A32SBASE)
  67. #define VMENPA32_TO_PHYS(x)    ((unsigned)(x)+VME_A32NPBASE)
  68. #if !defined(IP5) && !defined(IP17)
  69. #define VME2NPA32_TO_PHYS(x)    ((unsigned)(x)+VME_2A32NPBASE)
  70. #endif
  71.  
  72. /* for io3 E space */
  73. #define VME1SA24_TO_PHYS(x)    ((unsigned)(x)+VME1_A24SBASE)
  74. #define VME1NPA24_TO_PHYS(x)    ((unsigned)(x)+VME1_A24NPBASE)
  75.  
  76. #else /* kernel */
  77.  
  78. #define    VMENPA16_TO_PHYS(x)    (vme_to_phys((x), VME_A16NP))
  79. #define    VMESA16_TO_PHYS(x)    (vme_to_phys((x), VME_A16S))
  80. #define    VMENPA24_TO_PHYS(x)    (vme_to_phys((x), VME_A24NP))
  81. #define    VMESA24_TO_PHYS(x)    (vme_to_phys((x), VME_A24S))
  82. #define    VMENPA32_TO_PHYS(x)    (vme_to_phys((x), VME_A32NP))
  83. #define    VMESA32_TO_PHYS(x)    (vme_to_phys((x), VME_A32S))
  84.  
  85. /* misnamed macro */
  86. #define vme_to_phys(addr, type) (vme_ioaddr[(vme_adapter(addr))][(type)].v_base + (addr))
  87.  
  88. #define IS_VME_A16NP(x)    (is_vme_space((x), VME_A16NP))
  89. #define IS_VME_A16S(x)    (is_vme_space((x), VME_A16S))
  90. #define IS_VME_A24NP(x)    (is_vme_space((x), VME_A24NP))
  91. #define IS_VME_A24S(x)    (is_vme_space((x), VME_A24S))
  92. #define IS_VME_A32NP(x)    (is_vme_space((x), VME_A32NP))
  93. #define IS_VME_A32S(x)    (is_vme_space((x), VME_A32S))
  94.  
  95. #endif /* STANDALONE */
  96.  
  97. #endif /* !__SYS_VMEREG_H__ */
  98.  
  99.